iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

Go語言自學挑戰系列 第 22

第二十三天:Goroutine 介紹(4)channels 緩衝Bufferied

  • 分享至 

  • xImage
  •  

非緩衝Unbuffered Channels VS 緩衝buffered Channels

下圖清楚解釋非緩衝Unbuffered Channels 和 緩衝buffered Channels差別,

  • Unbuffered Channels

  • buffered Channels

非緩衝Unbuffered Channels

兩個Goroutine一次只能交換一筆資料,交換的同時過程鎖定,直到交換結束。

緩衝buffered Channels

channel增加具有容量,兩個 Goroutine可同時接收與發送資料。

Golang buffered Channels

buffered Channel宣告方式如下,和Channel方式一樣,但增加了緩衝值:

c := make(chan 資料型別,num)//num緩衝值

程式範例:

package main

import "fmt"

func main() {

	messages := make(chan string, 2)

	messages <- "A"
	messages <- "B"
	fmt.Println(<-messages)
	fmt.Println(<-messages)
}

輸出結果:

A
B

參考資料

  1. https://gobyexample.com/channel-buffering
  2. https://hoohoo.top/blog/golang-channels/
  3. https://www.ardanlabs.com/blog/2014/02/the-nature-of-channels-in-go.html

上一篇
第二十二天:Goroutine 介紹(3)channels 探討
下一篇
第二十四天:字串控制 String Functions
系列文
Go語言自學挑戰29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言